package main

import (
	"fmt"
	"golang.org/x/net/context"
	"sync"
)

var gw sync.WaitGroup

func main() {
	ctx := context.WithValue(context.Background(), "userId", "1")
	gw.Add(1)
	go demo(ctx)
	ctx = context.WithValue(ctx, "name", "陈浩杰")
	gw.Add(1)
	go demo2(ctx)
	gw.Wait()
}

func demo(ctx context.Context) {
	value := ctx.Value("userId")
	fmt.Println("demo", value)
	gw.Done()
}

func demo2(ctx context.Context) {
	userId := ctx.Value("userId")
	fmt.Println("demo2", userId)
	name := ctx.Value("name")
	fmt.Println("demo2", name)
	gw.Done()
}
